
/**
 * 
 * 猜字谜
 * 
 * 题目描述

小王设计了一个简单的猜字谜游戏，游戏的谜面是一个错误的单词，比如 nesw，玩家需要猜出谜底库中正确的单词。猜中的要求如下：

对于某个谜面和谜底单词，满足下面任一条件都表示猜中：

变换顺序以后一样的，比如通过变换 w 和 e 的顺序，“nwes” 跟 “news” 是可以完全对应的；
字母去重以后是一样的，比如 “woood” 和 “wood” 是一样的，它们去重后都是 “wod”
请你写一个程序帮忙在谜底库中找到正确的谜底。

谜面是多个单词，都需要找到对应的谜底，如果找不到的话，返回 “not found”

输入描述
谜面单词列表，以 “,” 分隔
谜底库单词列表，以 "," 分隔
输出描述
匹配到的正确单词列表，以 "," 分隔

如果找不到，返回 "not found"

备注
单词的数量 N 的范围：0 < N < 1000
词汇表的数量 M 的范围：0 < M < 1000
单词的长度 P 的范围：0 < P < 20
输入的字符只有小写英文字母，没有其他字符
用例
输入	conection
connection,today
输出	connection
说明	无
输入	bdni,wooood
bind,wrong,wood
输出	bind,wood
说明	无
 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

/**
  * 
  题目解析
本题有点歧义，那就是：

对于某个谜面和谜底单词，满足下面任一条件都表示猜中：
变换顺序以后一样的，比如通过变换w和e的顺序，“nwes”跟“news”是可以完全对应的；
字母去重以后是一样的，比如“woood”和“wood”是一样的，它们去重后都是“wod”
那么如果两个条件都满足的话，算不算猜中呢？

如果两个条件都满足也算猜中的话，那我们直接对谜底和谜面单词进行去重+字典序排序，然后对比即可。

  */
public class 猜字谜 {
    public static void main(String[] args) {
        

        try{

            Scanner scanner = new Scanner(System.in);

            String[] line1Arr = scanner.nextLine().split(",");
            String[] line2Arr = scanner.nextLine().split(",");

            List<String> resultList = new ArrayList<>();

            for(String str1 : line1Arr){

                //采用 TreeSet 对 str 排序和去重
                String handledStr1 = handleStr(str1);

                for(String str2 : line2Arr){
                    String handledStr2 = handleStr(str2);

                    if(handledStr2.equals(handledStr1)){

                        resultList.add(str2);
                    }
                }

            }

            if(resultList.isEmpty()){

                System.out.println("not found");

            } else {

                System.out.println(String.join(",", resultList));

            }

            

        }catch(Exception e){
            e.printStackTrace();
        }
    }

    private static String handleStr(String str){

        // TreeSet<Character> set = new TreeSet<>();
        
        // for(char c : str.toCharArray()){

        //     set.add(c);
        // }

        // return set.toString();

        //去重
        List<String> newList = new ArrayList<>(str.length());

        for(char c : str.toCharArray()){

            newList.add(""+c);

        }

        List<String> list = newList.stream().sorted().distinct().collect(Collectors.toList());

        StringBuilder builder = new StringBuilder();
        for(String s : list){
            builder.append(s);
        }

        return builder.toString();

    }
}
